using System;

namespace Atomic.Thermodynamics
{
	/*[Serializable]
	public class DebyePotential : IPotential
	{
		private double theta;

		public DebyePotential(double debyeTemperature)
		{
			theta = debyeTemperature;
		}

		public double FreeEnergy(double temperature)
		{
			double f, s, cv;
			Compute(temperature, out f, out s, out cv);

			return f;
		}

		private void Compute(double t, out double f, out double s, out double cv)
		{
			if (t < 0.0)
			{
				throw new ArgumentOutOfRangeException();
			}

			// The Debye function D_3.
			double x = theta / t;
			double debye = DebyeGruneisenHelmholtzPotential.DebyeFunction(x);

			// Boltzmann's constant.
			double kb = 8.617332478e-5; // eV/K

			double e = kb * (3.0 * t * debye + 1.125 * theta);
			s = kb * (4.0 * debye - 3.0 * Math.Log(1.0 - Math.Exp(-x)));

			f = e - t * s;
			cv = 3.0 * kb * (4.0 * debye - 3.0 * x / (Math.Exp(x) - 1.0));
		}
	}*/
}
